package Maths;

/**
 * In number theory, the aliquot sum s(n) of a positive integer n is the sum of all proper divisors
 * of n, that is, all divisors of n other than n itself. For example, the proper divisors of 15
 * (that is, the positive divisors of 15 that are not equal to 15) are 1, 3 and 5, so the aliquot
 * sum of 15 is 9 i.e. (1 + 3 + 5). Wikipedia: https://en.wikipedia.org/wiki/Aliquot_sum
 */
public class AliquotSum {
  public static void main(String[] args) {
    assert aliquotSum(1) == 0;
    assert aliquotSum(6) == 6;
    assert aliquotSum(15) == 9;
    assert aliquotSum(19) == 1;
  }

  /**
   * Finds the aliquot sum of an integer number
   *
   * @param number a positive integer
   * @return aliquot sum of given {@code number}
   */
  public static int aliquotSum(int number) {
    int sum = 0;
    for (int i = 1, limit = number / 2; i <= limit; ++i) {
      if (number % i == 0) {
        sum += i;
      }
    }
    return sum;
  }
}
